Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.55/209: Рейтинг темы: голосов - 209, средняя оценка - 4.55
 Аватар для ronaldo
94 / 48 / 63
Регистрация: 16.06.2014
Сообщений: 386

Тип __int128 - есть или нету?

05.04.2015, 15:48. Показов 45959. Ответов 65
Метки нет (Все метки)

Доброго времени суток.
Много чего в интернете почитал по этому вопросу, но когда перешёл к действиям и написал небольшой код
C++
1
2
3
4
5
6
#include <limits.h>
#include <stdio.h>
int main()
{
    __int128 chi=1844674407370955204699;
    printf("%llu\n",chi);
1
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.04.2015, 15:48
Ответы с готовыми решениями:

В первый массив дописать число, которое есть во втором массиве, но нету в первом
Есть 2 массива: int arr1; int arr2; for(int i=0;i&lt;5;i++) { arr1=i; arr2=i+1; } for(int i=0;i&lt;5;i++)

Строка из Sheet1 есть в Sheet2 или нету?
Подскажите, пожалуйста, как быстрее ответить на вопрос, строка из Sheet1 есть в Sheet2 или нету? В Sheet2 - около 10тыс строк, то есть...

Проверить поле Edit1 - есть содержимое или нету
Добрый день, подскажите пожалуйста, как можно проверить, есть буквы, цифры символы и т.д. в поле Edit1 Вот нашёл //ошибка String...

65
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
26.08.2015, 12:54
ronaldo, Зависит от процессора, ОС, компилятора. Не знаю как ответить про вопрос что вам нужно взять, почитайте про 128 бит побольше: https://en.wikipedia.org/wiki/128-bit

Добавлено через 5 минут
Но вкратце в gcc/clang должен быть доступен, если платформа x64.
1
-3 / 11 / 5
Регистрация: 22.01.2011
Сообщений: 201
26.08.2015, 19:57
ronaldo,
Если я прав, то возникает вопрос. Вот имею я gcc, например. Какую надо взять операционную систему, чтобы смог пользоваться типом __int128?
Любую из перечисленных, есть некоторые ограничения, например в 2000 виндусе точно работать не будет.
Также во многих операционных системах, основанных на армах, не ручаюсь за смартфоны но на многих контроллерах точно.
И не в убунте дело, а в ядре в данном случае, я непомню какое там используется, но почти УВЕРЕН что работать будет, может будут некоторые проблемы конечно. Но их точно будет меньше чем в семерке.
Если не ошибаюсь то виндус семерка не поддерживает векторные вычисления, хотя, несомненно программу вы скомпилировать можете, и если она простая, то безусловно работать будет!!! Поэтому пример дать не могу.

Добавлено через 5 минут
ForEveR, я не тестировал, но настройки компилятора ктото смотрел?
Дело в том, что в GCC настройки для 32 битной системы данный тип просто закоментирован.
C++
1
2
3
4
5
6
7
8
9
10
11
/* Define if __float128 is supported on this host. */
#define _GLIBCXX_USE_FLOAT128 1
 
/* Defined if gettimeofday is available. */
#define _GLIBCXX_USE_GETTIMEOFDAY 1
 
/* Define if get_nprocs is available in <sys/sysinfo.h>. */
/* #undef _GLIBCXX_USE_GET_NPROCS */
 
/* Define if __int128 is supported on this host. */
/* #undef _GLIBCXX_USE_INT128 */
Это для 32 бит, однако тип float128 не закоментирован

А для 64 бит вот
C++
1
2
3
4
5
6
7
8
9
10
11
/* Define if __float128 is supported on this host. */
#define _GLIBCXX_USE_FLOAT128 1
 
/* Defined if gettimeofday is available. */
#define _GLIBCXX_USE_GETTIMEOFDAY 1
 
/* Define if get_nprocs is available in <sys/sysinfo.h>. */
/* #undef _GLIBCXX_USE_GET_NPROCS */
 
/* Define if __int128 is supported on this host. */
#define _GLIBCXX_USE_INT128 1
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
26.08.2015, 20:29
Цитата Сообщение от sfinexer Посмотреть сообщение
Это для 32 бит, однако тип float128 не закоментирован
Осмелюсь предположить следующее...

128-битный вещественный тип эмулируется в GCC на некоторых архитектурах.

128-битного целого типа на архитектуре x86_64 нет, но специфика этой архитектуры позволяет производить вычисления, результатом которых будут являться 128-битные значения, результат которых будет хранится в аккумуляторных регистрах rax/rdx (каждый по 64 бита), так же как на 32-битной архитектуре результат будет храниться в eax/edx, так же как в реальном режиме на 32-битной архитектуре результат будет храниться в ax/dx.

Всё это - особенности архитектуры и реализации.
2
-3 / 11 / 5
Регистрация: 22.01.2011
Сообщений: 201
26.08.2015, 22:35
castaway, По теме автора ответили я думаю.
Но от себя хочу сказать, что помимо всего прочего нужна и некая совместимость исходных кодов разных компиляторов, а следовательно типы подобные тем что рассмотрены в данной теме должны поддерживаться большинством компиляторов, и это несмотря на то что данный тип ни входит в стандарт языка.
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
26.08.2015, 22:41
sfinexer, о совместимости не может идти речь, пока этот тип не регламентирован Стандартом.
0
-3 / 11 / 5
Регистрация: 22.01.2011
Сообщений: 201
26.08.2015, 23:17
castaway, согласен, но по факту имеем что код является совместим, я проверял 4 основными компиляторами.
Вероятно, именно те особенности о которых вы сказали, и есть сдерживающим фактором.
Ведь не секрет что компиляторы обычно еще до выхода стандарта поддерживают некие возможности будущего стандарта.
Самым ярким примером наверное будет using namespace std; котоый по факту появился только в 11 стандарте, но в качестве эксперимента поддерживался повсеместно в качестве экспериментальной возможности еще до выхода указанного выше стандарта стандарта.
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
26.08.2015, 23:22
Спорить не о чем, но мне просто интересно...

Цитата Сообщение от sfinexer Посмотреть сообщение
я проверял 4 основными компиляторами.
Какими?

Цитата Сообщение от sfinexer Посмотреть сообщение
Самым ярким примером наверное будет using namespace std; котоый по факту появился только в 11 стандарте
Что именно, пространства имён, ключевое слово using, или что-то другое?
0
-3 / 11 / 5
Регистрация: 22.01.2011
Сообщений: 201
26.08.2015, 23:53
castaway, GCC (5.1), VC (2015), Clang (3.6.2), Bilder (XE8) (C++). Больше у меня нету
Особо с кодом не мудрил
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
using namespace std;
 int _tmain(int argc, _TCHAR* argv[])
{
    __int128 ee;
    ee=115;
 
    int ee1;
    ee1=ee;
    cout<<ee1<<endl;
    return 0;
}
Вывод в cout 128 битного числа не представляется возможным, поэтому переприсваиваю

PS: std ранее писать надо было std::cout<<ee1<<std::endl;

Добавлено через 14 минут
Кстати Bilder (XE8) единственный из приведенных не поддерживает С++14
2
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
27.08.2015, 00:00
sfinexer, благодарю за предоставленную информацию.
Я правильно тебя понял, во всех компиляторах это работает только на 64-битных целях?
0
-3 / 11 / 5
Регистрация: 22.01.2011
Сообщений: 201
27.08.2015, 00:04
castaway, да совершенно верно.
про __float128 работает и на 32 битных, но данное я лиш проверял на GCC и Clang
Проверку С++14 проводил проверкой вставки апостофа в качестве разделителя числа.
C++
1
2
int i
i=1'2;
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
27.08.2015, 00:16
Цитата Сообщение от sfinexer Посмотреть сообщение
про __float128 работает и на 32 битных, но данное я лиш проверял на GCC и Clang
Думаю ты неправильно проверял как минимум на GCC.
Самый простой код:
C++
1
2
3
4
int main()
{
    __int128 i;
}
ни в какую не собирает мой современный GCC, выдавая ошибку:
Кликните здесь для просмотра всего текста
Bash
1
2
3
4
5
main.cpp: In function 'int main()':
main.cpp:3:2: error: expected primary-expression before '__int128'
  __int128 i;
  ^
mingw32-make: *** [main.o] Error 1


Мой GCC:
Кликните здесь для просмотра всего текста
Bash
1
2
3
4
5
6
7
Using built-in specs.
COLLECT_GCC=f:\msys32\mingw32\bin\g++.EXE
COLLECT_LTO_WRAPPER=f:/msys32/mingw32/bin/../libexec/gcc/i686-w64-mingw32/5.1.0/lto-wrapper.exe
Target: i686-w64-mingw32
Configured with: ../../../src/gcc-5.1.0/configure --host=i686-w64-mingw32 --build=i686-w64-mingw32 --target=i686-w64-mingw32 --prefix=/mingw32 --with-sysroot=/c/mingw510/i686-510-posix-dwarf-rt_v4-rev0/mingw32 --with-gxx-include-dir=/mingw32/i686-w64-mingw32/include/c++ --enable-shared --enable-static --disable-multilib --enable-languages=c,c++,fortran,objc,obj-c++,lto --enable-libstdcxx-time=yes --enable-threads=posix --enable-libgomp --enable-libatomic --enable-lto --enable-graphite --enable-checking=release --enable-fully-dynamic-string --enable-version-specific-runtime-libs --disable-sjlj-exceptions --with-dwarf2 --disable-isl-version-check --disable-libstdcxx-pch --disable-libstdcxx-debug --enable-bootstrap --disable-rpath --disable-win32-registry --disable-nls --disable-werror --disable-symvers --with-gnu-as --with-gnu-ld --with-arch=i686 --with-tune=generic --with-libiconv --with-system-zlib --with-gmp=/c/mingw510/prerequisites/i686-w64-mingw32-static --with-mpfr=/c/mingw510/prerequisites/i686-w64-mingw32-static --with-mpc=/c/mingw510/prerequisites/i686-w64-mingw32-static --with-isl=/c/mingw510/prerequisites/i686-w64-mingw32-static --with-pkgversion='i686-posix-dwarf-rev0, Built by MinGW-W64 project' --with-bugurl=http://sourceforge.net/projects/mingw-w64 CFLAGS='-O2 -pipe -I/c/mingw510/i686-510-posix-dwarf-rt_v4-rev0/mingw32/opt/include -I/c/mingw510/prerequisites/i686-zlib-static/include -I/c/mingw510/prerequisites/i686-w64-mingw32-static/include' CXXFLAGS='-O2 -pipe -I/c/mingw510/i686-510-posix-dwarf-rt_v4-rev0/mingw32/opt/include -I/c/mingw510/prerequisites/i686-zlib-static/include -I/c/mingw510/prerequisites/i686-w64-mingw32-static/include' CPPFLAGS= LDFLAGS='-pipe -L/c/mingw510/i686-510-posix-dwarf-rt_v4-rev0/mingw32/opt/lib -L/c/mingw510/prerequisites/i686-zlib-static/lib -L/c/mingw510/prerequisites/i686-w64-mingw32-static/lib -Wl,--large-address-aware'
Thread model: posix
gcc version 5.1.0 (i686-posix-dwarf-rev0, Built by MinGW-W64 project)



Боюсь, ты просто забыл добавить флаг -m32 в GCC и Clang.
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
27.08.2015, 00:19
sfinexer, using namespace существует еще с первого Стандарта c++98.
0
-3 / 11 / 5
Регистрация: 22.01.2011
Сообщений: 201
27.08.2015, 00:24
Я такое не писал.

Я писал
Цитата Сообщение от castaway Посмотреть сообщение
про __float128 работает и на 32 битных, но данное я лиш проверял на GCC и Clang
Вы пишите
C++
1
2
3
4
int main()
{
    __int128 i;
}
Добавлено через 2 минуты
Цитата Сообщение от Tulosba Посмотреть сообщение
sfinexer, using namespace существует еще с первого Стандарта c++98.
D:\test\6\cc1plus.exe [Warning] command line option '-std=c99' is valid for C/ObjC but not for C++
Выдается предупреждение о том что это не совсем правильно.
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
27.08.2015, 00:26
Цитата Сообщение от sfinexer Посмотреть сообщение
Я такое не писал.
А я и не говорил что ты это писал. Я просто задал вопрос.
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
27.08.2015, 00:27
sfinexer, ты путаешь c99 и c++98. В сях пространств имен никогда не было. А в плюсах есть.
1
-3 / 11 / 5
Регистрация: 22.01.2011
Сообщений: 201
27.08.2015, 00:29
castaway, Я писал что __int128 работает только в 64 битных программах а __float128 работает и в 32 битных.
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
27.08.2015, 00:34
Цитата Сообщение от sfinexer Посмотреть сообщение
Выдается предупреждение о том что это не совсем правильно.
Странно.. не правда ли? Особенно если учесть что речь идёт о C++ и существуют только параметры: -std=c++98, -std=c++03, -std=c++11 и т.д...
0
-3 / 11 / 5
Регистрация: 22.01.2011
Сообщений: 201
27.08.2015, 00:38
Tulosba, да прошу прощения некоторое недоразумение вышло с using namespace std.
Действительно именно в этом месте вышло недоразумение

Впрочем данная тема не совсем о этом.

Добавлено через 1 минуту
castaway, ближе к теме обсуждения я написал что
__int128 работает только в 64 битных программах а __float128 работает и в 32 битных.
Со стандартами действительно погорячился, пересобиру потом среду разработку чтобы было с пояснениями...
1
27.08.2015, 00:41

Не по теме:

sfinexer, ты прав, это я невнимателен по поводу твоего высказывания про __float128.

0
 Аватар для артист
50 / 35 / 21
Регистрация: 17.09.2014
Сообщений: 1,615
02.04.2018, 10:32
Так есть этот __int128 или нет?
Декомпильнул программу, там эта фигня стоит, что делать то?

Так писать что ли?

C++
1
typedef unsigned long long long long int __int128;
Или так:
C++
1
typedef unsigned __int64 __int64 int __int128;
128 бит == 16 байт.
Самое длинное 4 байта - long.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.04.2018, 10:32

Как сделать тип данных или уже есть такой тип данных который состоит из всех печатыемых символов?
Как сделать тип данных или уже есть такой тип данных который состоит из всех печатыемых символов? Если есть то как он называется ?

Javascript - классы, они есть или их нету в Javascript?
Скажите, в Джаваскрипт есть классы как в пхп например? Я так толкового ответа порывшись по интернету не нашёл.

Есть ли оператор, который переводит строковый тип в Integer или Real
Напомните мне пожалуйста как называется оператор, который переводит строковый тип в интегер или реал Друзья сказали strinint или string...

Есть ли в С# тип или какие-то средства для описания и работы с множествами?
Есть ли в С# тип или какие-то средства для описания и работы с множествами? Как в паскале set of например.

Есть в поиске и нету
Здравствуйте я сталкнулся с такой проблемой, мой сайт как бы есть в поиске http://www.pr-cy.ru/analysis/sagev.3dn.ru 790 страниц загружено...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
[golang] Pipeline
alhaos 08.06.2026
Pipeline Pipeline — паттерн конкурентной обработки данных в Go. Суть: данные проходят через цепочку независимых стадий, каждая из которых работает в своей горутине и общается с соседями через. . .
Свет внутри себя
kumehtar 07.06.2026
Пусть это будет здесь lIs4oanZS9Y
Программа для com-порта
Uhbif79 05.06.2026
Всем привет, давно хотел изучить Qt, начинал, бросал, потом снова начинал. И сейчас вот смог написать свою первую программу. До этого имел опыт программирования микроконтроллеров, писал прошивки на. . .
Транскрипция 55-минутного видео через Whisper: WhisperDesktop облажался, спас Google Colab[
anaschu 01.06.2026
Понадобилось получить текст из свежезагруженного видео на YouTube. Казалось бы, задача на пять минут. Заняла полтора часа. Делюсь опытом — может кому пригодится последовательность решений. . . .
21 мат мед. Планы на развитие модели здравоСохранения
anaschu 01.06.2026
AnyLogic: план развития симуляционной модели рабочего коллектива — динамический абсентеизм, реальные данные, три сценария сравнения Продолжаю серию постов о дискретно-событийной модели рабочего. . .
20. Мат мед. Абсентеизм как отдельный тип простоя
anaschu 29.05.2026
Апдейт модели: исправленные баги, абсентеизм и новые механизмы Продолжаю развивать ранее описанную модель рабочего коллектива на AnyLogic. За последние несколько дней был проведён серьёзный. . .
19. здоровье, усталость и психотип работника влияют на производительность предприятия, и наоборот, производительность на здоровье, усталось и психотип
anaschu 28.05.2026
Дискретно-событийная модель рабочего коллектива на AnyLogic: здоровье, выгорание, психотипы и микростимуляция Привет, коллеги. Хочу поделиться итогами нескольких недель работы над симуляционной. . .
"Прокси" для последовательного порта
Eddy_Em 28.05.2026
Эту штуку написал я достаточно давно. Но сейчас вот понадобилось настроить датчик грозы, но при этом не отключать его от "метеодемона". Соответственно, надо запустить этот "прокси": метеодемон будет. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru