<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Linux Forum &mdash; BASH и С\С++. Псевдографические символы.]]></title>
		<link>https://linuxforum.ru/viewtopic.php?id=14014</link>
		<atom:link href="https://linuxforum.ru/extern.php?action=feed&amp;tid=14014&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «BASH и С\С++. Псевдографические символы.».]]></description>
		<lastBuildDate>Tue, 31 May 2011 16:02:46 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: BASH и С\С++. Псевдографические символы.]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=184186#p184186</link>
			<description><![CDATA[<div class="quotebox"><cite>Fat-Zer пишет:</cite><blockquote><p>именно это - все современные, кроме поделия от М$, а полностью стандарт поддерживают (по слухам) только sun&#039;овский и то, что сделало IBM.</p></blockquote></div><p>угу... впрочем, в контексте сабжа трудно не согласится - в венде всё через /dev/ass&nbsp; smile <br /></p><div class="quotebox"><cite>Fat-Zer пишет:</cite><blockquote><p>я тоже хочу такую траву.</p></blockquote></div><p>да... что-то мне занесло&nbsp; :lol:</p>]]></description>
			<author><![CDATA[null@example.com (drBatty)]]></author>
			<pubDate>Tue, 31 May 2011 16:02:46 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=184186#p184186</guid>
		</item>
		<item>
			<title><![CDATA[Re: BASH и С\С++. Псевдографические символы.]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=184182#p184182</link>
			<description><![CDATA[<div class="quotebox"><cite>drBatty пишет:</cite><blockquote><p>все компиляторы это пожрут?</p></blockquote></div><p>именно это - все современные, кроме поделия от М$, а полностью стандарт поддерживают (по слухам) только sun&#039;овский и то, что сделало IBM.</p><div class="quotebox"><cite>drBatty пишет:</cite><blockquote><p>повлияет, если процессор и компилятор по разному смотрят на порядок...</p></blockquote></div><p>эмм... я тоже хочу такую траву.</p>]]></description>
			<author><![CDATA[null@example.com (Fat-Zer)]]></author>
			<pubDate>Tue, 31 May 2011 15:50:42 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=184182#p184182</guid>
		</item>
		<item>
			<title><![CDATA[Re: BASH и С\С++. Псевдографические символы.]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=184142#p184142</link>
			<description><![CDATA[<div class="quotebox"><cite>Fat-Zer пишет:</cite><blockquote><p>сложение по модулю 2 это xor</p></blockquote></div><p>угу. там чуть ниже про XOR есть.<br /></p><div class="quotebox"><cite>Fat-Zer пишет:</cite><blockquote><p>С99 с его uint32_t спасёт отца русской демократии...</p></blockquote></div><p>все компиляторы это пожрут?<br /></p><div class="quotebox"><cite>Fat-Zer пишет:</cite><blockquote><p>не должен</p></blockquote></div><p>повлияет, если процессор и компилятор по разному смотрят на порядок...</p>]]></description>
			<author><![CDATA[null@example.com (drBatty)]]></author>
			<pubDate>Tue, 31 May 2011 14:02:46 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=184142#p184142</guid>
		</item>
		<item>
			<title><![CDATA[Re: BASH и С\С++. Псевдографические символы.]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=184117#p184117</link>
			<description><![CDATA[<p>поправка:<br /></p><div class="quotebox"><cite>drBatty пишет:</cite><blockquote><p>а | &quot;логическим сложением&quot;. Ну и из-за правил. Это действительно сложение, но по модулю 2. Т.е. двойка откидывается. Потому 1+1 =&gt; 2 =&gt; 2+0 =&gt; 0(mod2))</p></blockquote></div><p>сложение по модулю 2 это xor</p><div class="quotebox"><cite>drBatty пишет:</cite><blockquote><p>Вот voral потренировался сегодня, завтра радостно что-то напишет. А после завтра это рухнет</p></blockquote></div><p>С99 с его uint32_t спасёт отца русской демократии...</p><div class="quotebox"><cite>drBatty пишет:</cite><blockquote><p>Естественно, порядок байтов влияет на сдвиг.</p></blockquote></div><p>не должен, но я бы 3 раза проверил если бы работал с биг-эндингом... а вот приведение типов разного размера он может порушить...</p>]]></description>
			<author><![CDATA[null@example.com (Fat-Zer)]]></author>
			<pubDate>Tue, 31 May 2011 13:22:38 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=184117#p184117</guid>
		</item>
		<item>
			<title><![CDATA[Re: BASH и С\С++. Псевдографические символы.]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=184107#p184107</link>
			<description><![CDATA[<div class="quotebox"><cite>gramozeka пишет:</cite><blockquote><p>кстати в учебнике об этом совсем мало и ни одного практического примера кроме умножения ..</p></blockquote></div><p>дык говорю-же: слабое место Си <img src="https://linuxforum.ru/img/smilies/ac.gif" alt="ac" /><br />не сказать что баг, но не иссякающий&nbsp; источник багов...<br />вроде побочных эффектов.</p><p>Кстати, приоритеты не очень логичные, и лучше не писать в одну строчку. Лучше по одной операции в одной строке. Тоже кладезь багов...</p><p>В паскакалях есть &quot;наборы&quot;, которые, как я понял, те-же булевы операции. Но они огорожены. А тут... А ещё порядок байт вообще-говоря разный бывает, обычно сначала младший, но не всегда. Естественно, порядок байтов влияет на сдвиг.</p><p>На практике, сдвигами можно заменить умножение на константу. Например<br />(x &lt;&lt; 1) + (x &lt;&lt; 3) == 2*x+8*x == 10*x.<br />(опять таки не факт, что это быстрее. А если даже быстрее, не факт, что компилятор об этом не знает. Я уже так нарывался - мучаешься, пишешь... А потом оказывается, что компилятор написал даже лучше меня.)</p>]]></description>
			<author><![CDATA[null@example.com (drBatty)]]></author>
			<pubDate>Tue, 31 May 2011 13:04:31 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=184107#p184107</guid>
		</item>
		<item>
			<title><![CDATA[Re: BASH и С\С++. Псевдографические символы.]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=184100#p184100</link>
			<description><![CDATA[<p>записал в &quot;полезности&quot; ...<br /> <img src="https://linuxforum.ru/img/smilies/ag.gif" alt="ag" /> - буду изучать , кстати в учебнике об этом совсем мало и ни одного практического примера кроме умножения .. smile</p>]]></description>
			<author><![CDATA[null@example.com (gramozeka)]]></author>
			<pubDate>Tue, 31 May 2011 12:43:40 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=184100#p184100</guid>
		</item>
		<item>
			<title><![CDATA[Re: BASH и С\С++. Псевдографические символы.]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=184069#p184069</link>
			<description><![CDATA[<div class="quotebox"><cite>gramozeka пишет:</cite><blockquote><p>или на пальцах растолкуйте</p></blockquote></div><p>попробую...<br />итак: имеются три основные битовые операции:<br />1) инверсия<br /></p><div class="codebox"><pre><code>0 =&gt; 1
1 =&gt; 0</code></pre></div><p>2)логическое И<br /></p><div class="codebox"><pre><code>0 &amp; 0 =&gt; 0
0 &amp; 1 =&gt; 0
1 &amp; 0 =&gt; 0
1 &amp; 1 =&gt; 1</code></pre></div><p>3) логическое ИЛИ<br /></p><div class="codebox"><pre><code>0 | 0 =&gt; 0
0 | 1 =&gt; 1
1 | 0 =&gt; 1
1 | 1 =&gt; 1</code></pre></div><p>В Си логические операции выполняются над всеми байтами сразу. Обычно используют тип unsigned, который имеет длину типичную для машинного слова (32 или 64 бита сегодня).<br />Есть ещё операция ^<br />x ^ y == x &amp; ~y | ~x &amp; y<br />Она работает как ИЛИ, только 1 ^ 1 =&gt; 0. Потому и называется &quot;исключающее или&quot;, или короче XOR.</p><p>Приоритеты:<br />~ самый высокий (инверсия)<br />&amp;<br />|</p><p>(из-за приоритетов &amp; иногда называют &quot;логическим умножением&quot;, а | &quot;логическим сложением&quot;. Ну и из-за правил. Это действительно сложение, но по модулю 2. Т.е. двойка откидывается. Потому 1+1 =&gt; 2 =&gt; 2+0 =&gt; 0(mod2))</p><p>Биты двигать нельзя (К.О.), но слова из многих бит - можно. И влево, и вправо. Выдвигаемые биты бесследно исчезают (потому-то это слабое место - всегда надо помнить о потере информации).</p><p>x &lt;&lt; n это сдвиг x влево на n битов. Операция бинарная, сам x не меняется.<br />x &gt;&gt; n это сдвиг вправо.</p><p>Сколько битов в unsigned - никто не знает. Биты выдвигаются в никуда. Потому пользоваться сдвигами в Си == ходить по минному полю.<br />Вот <strong>voral</strong> потренировался сегодня, завтра радостно что-то напишет. А после завтра это рухнет&nbsp; :O <br />Ибо, как именно двигаются слова - в стандарте не определено (особенно знаковые), а значит, сегодня они двигаются так,&nbsp; а завтра - эдак.</p><p>И тем не менее, их иногда приходится применять. Ибо - быстро. x&lt;&lt;1 это тоже самое, что x*2, но намного быстрее. (но опять-таки - не всегда. 128&lt;&lt;1 == 0, если 128 - это char).</p><p>Логические операции применяются шире. Иногда удобно делать логику именно на битах. ИМХО можно полагать, что unsigned это как минимум 32 бита. Хотя такой быдлокод ОБЯЗАТЕЛЬНО надо подробно прокоментировать, что-бы починить его, когда он сломается.</p><p>Кстати, чисто заменой побитовых операций на обычные, можно значительно <strong>ускорить</strong> работу программы (ага, как это и не парадоксально). В частности сказывается то, что CPU распараллеливает не только данные, но и операции. Потому далеко не факт, что одна операция над двумя битами будет быстрее, чем две операции над двумя числами. Ещё в iP1 появился второй конвейер.</p>]]></description>
			<author><![CDATA[null@example.com (drBatty)]]></author>
			<pubDate>Tue, 31 May 2011 11:12:48 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=184069#p184069</guid>
		</item>
		<item>
			<title><![CDATA[Re: BASH и С\С++. Псевдографические символы.]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=183999#p183999</link>
			<description><![CDATA[<p>это получается вы там что-то с битами химичите так ?? где почитать , дайте ссыль ... или на пальцах растолкуйте , теорию я читал , только как это с практикой сочетается ???</p>]]></description>
			<author><![CDATA[null@example.com (gramozeka)]]></author>
			<pubDate>Tue, 31 May 2011 07:56:45 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=183999#p183999</guid>
		</item>
		<item>
			<title><![CDATA[Re: BASH и С\С++. Псевдографические символы.]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=183958#p183958</link>
			<description><![CDATA[<div class="quotebox"><cite>drBatty пишет:</cite><blockquote><p>между прочим - зря. так никто не делает.<br />битовые операции - слабое место С.</p></blockquote></div><p>Если честно, я еще и их на этом примере не много погонял (много, что в итоге осталось за кадром) т.к. на практике с битовыми операциями сталкивался от силы пару раз.</p><br /><div class="quotebox"><cite>drBatty пишет:</cite><blockquote><p>смените плюс на |.<br />оно конечно и так работает, но некрасиво.</p></blockquote></div><p>логично <img src="https://linuxforum.ru/img/smilies/ab.gif" alt="ab" /></p>]]></description>
			<author><![CDATA[null@example.com (voral)]]></author>
			<pubDate>Tue, 31 May 2011 06:00:11 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=183958#p183958</guid>
		</item>
		<item>
			<title><![CDATA[Re: BASH и С\С++. Псевдографические символы.]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=183946#p183946</link>
			<description><![CDATA[<div class="codebox"><pre><code>#include &lt;stdio.h&gt;
#include &lt;string.h&gt;

unsigned getcode(unsigned index)
{
    unsigned a = index &amp; 0xF000;
    a &gt;&gt;=12;
    unsigned b = index &amp; 0xfc0;
    b &lt;&lt;= 2;
    unsigned c = index &amp; 0x3f;
    c &lt;&lt;=16;
    return a | b | c | 0x8080e0;
}

unsigned re(unsigned index)
{
    unsigned a = index &amp; 0xFF0000;
    a &gt;&gt;= 16;
    unsigned b = index &amp; 0xff00;
    unsigned c = index &amp; 0xff;
    c &lt;&lt;= 16;
    return a | b | c;
}

int main()
{
    unsigned code;
    int i, j;
    char str[8];
    printf(&quot;┏━━━━┯━━━━━━┯━┳━━━━┯━━━━━━┯━┳━━━━┯━━━━━━┯━┳━━━━┯━━━━━━┯━┓\n&quot;);
    j = 1;
    for (i = 0x2500;i&lt;=0x259F;i++)
    {
        if(j == 1)
            printf(&quot;┃&quot;);
        code = getcode(i);
        memcpy(str, &amp;code, sizeof(unsigned));
        printf(&quot;%04x│%06x│%s┃&quot;, i, re(code), str);
        if(j &gt;= 4)
        {
            printf(&quot;\n&quot;);
            j = 0;
        }
        j++;
    }
    printf(&quot;┗━━━━┷━━━━━━┷━┻━━━━┷━━━━━━┷━┻━━━━┷━━━━━━┷━┻━━━━┷━━━━━━┷━┛\n&quot;);
    return 0;
}</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (drBatty)]]></author>
			<pubDate>Tue, 31 May 2011 03:09:03 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=183946#p183946</guid>
		</item>
		<item>
			<title><![CDATA[Re: BASH и С\С++. Псевдографические символы.]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=183944#p183944</link>
			<description><![CDATA[<div class="quotebox"><cite>voral пишет:</cite><blockquote><p>Пришлось несколько софтин где с данными в хексе пришлось много работать да про работу с битами тут несколько раз последнее время говорили..... А с псевдографикой я не то что в линуксе я в си первый раз столкнулся, а из поса дока еще и про связь с utf8 узнал.... Стало интересно поковырять. Вот табличку варганил</p></blockquote></div><p>между прочим - зря. так никто не делает.<br />битовые операции - слабое место С.<br /></p><div class="quotebox"><cite>voral пишет:</cite><blockquote><p> return ((index &amp; 0xF000)&gt;&gt;12) + ((index &amp; 0xfc0)&lt;&lt;2) + ((index &amp; 0x3f)&lt;&lt;16) + 0x8080e0;</p></blockquote></div><p>смените плюс на |.<br />оно конечно и так работает, но некрасиво.</p>]]></description>
			<author><![CDATA[null@example.com (drBatty)]]></author>
			<pubDate>Tue, 31 May 2011 03:07:52 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=183944#p183944</guid>
		</item>
		<item>
			<title><![CDATA[Re: BASH и С\С++. Псевдографические символы.]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=183927#p183927</link>
			<description><![CDATA[<p><strong>voral</strong> собсно это мне и нужно было , буду разбираться как это работает ...</p>]]></description>
			<author><![CDATA[null@example.com (gramozeka)]]></author>
			<pubDate>Mon, 30 May 2011 21:40:28 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=183927#p183927</guid>
		</item>
		<item>
			<title><![CDATA[Re: BASH и С\С++. Псевдографические символы.]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=183922#p183922</link>
			<description><![CDATA[<div class="quotebox"><cite>gramozeka пишет:</cite><blockquote><p>ну раз такое дело ткните носом где об этих алгоритмах почитать .. а то я дальше своей подписи&nbsp; :O не продвинулся ..</p></blockquote></div><p>я ни где не читал... Пришлось несколько софтин где с данными в хексе пришлось много работать да про работу с битами тут несколько раз последнее время говорили..... А с псевдографикой я не то что в линуксе я в си первый раз столкнулся, а из поса дока еще и про связь с utf8 узнал.... Стало интересно поковырять. Вот табличку варганил<br /></p><div class="codebox"><pre><code>#include &lt;stdio.h&gt;
unsigned int getcode(unsigned int index)
{
    return ((index &amp; 0xF000)&gt;&gt;12) + ((index &amp; 0xfc0)&lt;&lt;2) + ((index &amp; 0x3f)&lt;&lt;16) + 0x8080e0;
}
unsigned int re(unsigned int index)
{
    return ((index &amp; 0xFF0000)&gt;&gt;16) + (index &amp; 0xff00) + ((index &amp; 0xff)&lt;&lt;16);
}
main()
{
    unsigned int test1=0;
    unsigned int *wchar1 = &amp;test1;
    int i;
    for (i = 0x2500;i&lt;=0x259F;i++)
    {
        test1 = getcode(i);
        printf(&quot;%x\t%x\t%s\n&quot;,i, re(test1),wchar1);
    }
}</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (voral)]]></author>
			<pubDate>Mon, 30 May 2011 21:10:28 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=183922#p183922</guid>
		</item>
		<item>
			<title><![CDATA[Re: BASH и С\С++. Псевдографические символы.]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=183902#p183902</link>
			<description><![CDATA[<p><strong>drBatty</strong> да про обоих , я уж целый день упражняюсь , а такими темпами глядишь к пенсии и &quot;Hello World !&quot; в рамочке траурной осилю . smile</p>]]></description>
			<author><![CDATA[null@example.com (gramozeka)]]></author>
			<pubDate>Mon, 30 May 2011 19:38:23 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=183902#p183902</guid>
		</item>
		<item>
			<title><![CDATA[Re: BASH и С\С++. Псевдографические символы.]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=183898#p183898</link>
			<description><![CDATA[<p><strong>gramozeka</strong>, про bash или про C?</p>]]></description>
			<author><![CDATA[null@example.com (drBatty)]]></author>
			<pubDate>Mon, 30 May 2011 19:30:30 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=183898#p183898</guid>
		</item>
	</channel>
</rss>
