- 1
- 2
byteL = (length & (0x00ff));
byteH = (length - byteL)>>BITS_IN_BYTE;
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+139
byteL = (length & (0x00ff));
byteH = (length - byteL)>>BITS_IN_BYTE;
Вдруг биты справа полезут прямо из компьютера, давайте вычтем!
Макрос BITS_IN_BYTE особенно радует!
inkanus-gray 04.12.2013 10:22 # +3
bormand 04.12.2013 13:14 # 0
bormand 04.12.2013 13:29 # +1
bormand 04.12.2013 13:37 # +1
Кстати эту фигню гцц компилит в красивый код:
roman-kashitsyn 04.12.2013 13:39 # +2
bormand 04.12.2013 13:42 # +2
А вдруг?
guest 07.12.2013 00:23 # 0
TarasB 04.12.2013 11:36 # +1
А вдруг?
Stertor 04.12.2013 12:49 # −3
kipar 04.12.2013 13:01 # +3
1024-- 04.12.2013 16:23 # 0
http://govnokod.ru/14174#comment203332
kipar 04.12.2013 16:31 # 0
Многие ЦСП имеют CHAR_BIT равным 16 или более[1][2]
1024-- 04.12.2013 16:38 # 0
kipar 04.12.2013 16:45 # +2
Dummy00001 05.12.2013 21:22 # +2
это только на кривых/нишевых платформах которым по барабану совместимость во всем остальным, char может быть более чем один байт.
если проц не умеет байты, что уже случалось не раз, то компилер должен эмулировать.
bormand 05.12.2013 21:32 # +1
Чем один октет? Не зря же во всяких RFC пишут именно "октет" а не "байт"...
Dummy00001 05.12.2013 21:44 # +2
я где-то видел флеймы с тех времен, где то ли Керниган то ли Риччи флеймил на чудаков на тему что char в С есть и останется 8 байт, и идите в Ж с вашими извращениями. это были как раз те времена когда все железо начало стандартизироватся на 8ми битном байте.
inkanus-gray 06.12.2013 09:44 # +1
Процитирую http://www.parashift.com/c++-faq/intrinsic-types.html:
26.1. Can sizeof(char) be 2 on some machines? For example, what about double-byte characters?
No, sizeof(char) is always 1. Always. It is never 2. Never, never, never.
Even if you think of a "character" as a multi-byte thingy, char is not. sizeof(char) is always exactly 1. No exceptions, ever.
26.4. But, but, but what about machines where a char has more than 8 bits? Surely you're not saying a C++ byte might have more than 8 bits, are you?!?
Yep, that's right: a C++ byte might have more than 8 bits.
The C++ language guarantees a byte must always have at least 8 bits. But there are implementations of C++ that have more than 8 bits per byte.
26.5. Okay, I could imagine a machine with 9-bit bytes. But surely not 16-bit bytes or 32-bit bytes, right?
Wrong.
I have heard of one implementation of C++ that has 64-bit "bytes." You read that right: a byte on that implementation has 64 bits. 64 bits per byte. 64. As in 8 times 8.
And yes, you're right, combining with the above would mean that a char on that implementation would have 64 bits.
Ну и самое интересное в 26.6, где рассказывается про PDP-10 с 36-битовыми словами, где компилятор эмулирует 9-битовые байты.
bormand 06.12.2013 10:33 # +1