#jsDisabledContent { display:none; } My Account | Register | Help

# Finger-counting

Article Id: WHEBN0009202262
Reproduction Date:

 Title: Finger-counting Author: World Heritage Encyclopedia Language: English Subject: Prehistoric numerals Collection: Finger-Counting Publisher: World Heritage Encyclopedia Publication Date:

### Finger-counting

Finger-counting, or dactylonomy, is the act of counting along one's fingers. Though marginalized in modern societies by Arabic numerals, formerly different systems flourished in many cultures,[Note 1][Note 2] including educated methods far more sophisticated than the one-by-one finger count taught today in preschool education.

Finger-counting can also serve as a form of manual communication, particularly in marketplace trading – including hand signaling during open outcry in floor trading – and also in games such as morra.

Finger-counting varies between cultures and over time, and is studied by ethnomathematics. Cultural differences in counting are sometimes used as a shibboleth, particularly to distinguish nationalities in war time. These form a plot point in the film Inglourious Basterds, by Quentin Tarantino, and in the novel Pi in the Sky, by John D. Barrow.[1][2]

A person indicating a numeral to another will hold up their fingers to signal the specific number. For example, an English speaker will raise their index, middle finger, and ring fingers vertically to signal the number 3.[3]

For Continental Europeans, the thumb represents the first digit to be counted (number 1), as opposed to the index finger in North America and the UK. The index finger is number 2 through to the little finger as number 5. Fingers are generally extended while counting, beginning at the thumb and finishing at the little finger. For example, Europeans would use their thumb, and index, middle and ring fingers to express the number 4,[3] wherein North America they would use their index, middle, ring, and little finger.

Finger-counting systems in use in many regions of Asia allow the counting to 12 by using a single hand. The thumb acts as a pointer touching the three finger bones of each finger in turn, starting with the outermost bone of the little finger. One hand is used to count numbers up to 12. The other hand is used to display the number of completed base-12s. This continues until twelve dozen is reached, therefore 144 is counted.[4][Note 3][5]

Chinese number gestures count up to 10 but can exhibit some regional differences.

In Japan counting for oneself begins with the palm of one hand open. Like in East Slavic countries, the thumb represents number 1; the little finger is number 5. Digits are folded inwards while counting, starting with the thumb. A closed palm indicates number 5. By reversing the action, number 6 is indicated by an extended little finger. A return to an open palm signals the number 10. However to indicate numerals to others, the hand is used in the same manner as an English speaker. The index finger becomes number 1; the thumb now represents number 5. For numbers above five, the appropriate number of fingers from the other hand are placed against the palm. For example, number 7 is represented by the index and middle finger pressed against the palm of the open hand.[6] Number 10 is displayed by presenting both hands open with outward palms.

## Contents

• Historical counting 1
• Notes 3
• References 4

## Historical counting

Complex systems of dactylonomy were used in the ancient world.[7] The Greco-Roman author Plutarch, in his Lives, mentions finger counting as being used in Persia in the first centuries AD, so the source of the system may lie in Iran. The practice was later used widely in medieval Islamic lands. The earliest reference to this method of using the hands to refer to the natural numbers may have been in some Prophetic traditions going back to the early days of Islam, more than fourteen centuries ago. In one tradition as reported by Yusayra the Prophet Muhammad enjoined upon his female companions to express praise to God and to count using their fingers (=واعقدن بالأنامل )( سنن الترمذي). In Arabic, dactylonomy is known as "Number reckoning by finger folding" (=حساب العقود ). The practice was well known in the Arabic-speaking world and was quite commonly used as evidenced by the numerous references to it in Classical Arabic literature. Poets could allude to a miser by saying that his hand made "ninety-three", i.e. a closed fist, the sign of avarice. When an old man was asked how old he was he could answer by showing a closed fist, meaning 93.The gesture for 50 was used by some poets (for example Ibn Al-Moutaz) to describe the beak of the goshawk.

Some of the gestures used to refer to numbers were even known in Arabic by special technical terms such as Kas' (=القصع ) for the gesture signifying 29, Dabth (=الـضَـبْـث ) for 63 and Daff (= الـضَـفّ) for 99 (فقه اللغة). The polymath Al-Jahiz advised schoolmasters in his book Al-Bayan (البيان والتبيين) to teach finger counting which he placed among the five methods of human expression. Similarly, Al-Suli, in his Handbook for Secretaries, wrote that scribes preferred dactylonomy to any other system because it required neither materials nor an instrument, apart from a limb. Furthermore, it ensured secrecy and was thus in keeping with the dignity of the scribe's profession. Books dealing with dactylonomy, such as a treatise by the mathematician Abu'l-Wafa al-Buzajani, gave rules for performing complex operations, including the approximate determination of square roots. Several pedagogical poems dealt exclusively with finger counting, some of which were translated into European languages, including a short poem by Shamsuddeen Al-Mawsili (translated into French by Aristide Marre) and one by Abul-Hasan Al-Maghribi (translated into German by Julius Ruska.[8]

A very similar form is presented by the English monk and historian Bede in the first chapter of his De temporum ratione, (725), entitled "Tractatus de computo, vel loquela per gestum digitorum",[2][7] which allowed counting up to 9,999 on two hands, though it was apparently little-used for numbers of 100 or more. This system remained in use through the European Middle Ages, being presented in slightly modified form by Luca Pacioli in his seminal Summa de arithmetica (1494).

## Notes

-- Module:Hatnote -- -- -- -- This module produces hatnote links and links to related articles. It -- -- implements the and meta-templates and includes -- -- helper functions for other Lua hatnote modules. --

local libraryUtil = require('libraryUtil') local checkType = libraryUtil.checkType local mArguments -- lazily initialise Module:Arguments local yesno -- lazily initialise Module:Yesno

local p = {}

-- Helper functions

local function getArgs(frame) -- Fetches the arguments from the parent frame. Whitespace is trimmed and -- blanks are removed. mArguments = require('Module:Arguments') return mArguments.getArgs(frame, {parentOnly = true}) end

local function removeInitialColon(s) -- Removes the initial colon from a string, if present. return s:match('^:?(.*)') end

function p.findNamespaceId(link, removeColon) -- Finds the namespace id (namespace number) of a link or a pagename. This -- function will not work if the link is enclosed in double brackets. Colons -- are trimmed from the start of the link by default. To skip colon -- trimming, set the removeColon parameter to true. checkType('findNamespaceId', 1, link, 'string') checkType('findNamespaceId', 2, removeColon, 'boolean', true) if removeColon ~= false then link = removeInitialColon(link) end local namespace = link:match('^(.-):') if namespace then local nsTable = mw.site.namespaces[namespace] if nsTable then return nsTable.id end end return 0 end

function p.formatPages(...) -- Formats a list of pages using formatLink and returns it as an array. Nil -- values are not allowed. local pages = {...} local ret = {} for i, page in ipairs(pages) do ret[i] = p._formatLink(page) end return ret end

function p.formatPageTables(...) -- Takes a list of page/display tables and returns it as a list of -- formatted links. Nil values are not allowed. local pages = {...} local links = {} for i, t in ipairs(pages) do checkType('formatPageTables', i, t, 'table') local link = t[1] local display = t[2] links[i] = p._formatLink(link, display) end return links end

function p.makeWikitextError(msg, helpLink, addTrackingCategory) -- Formats an error message to be returned to wikitext. If -- addTrackingCategory is not false after being returned from -- Module:Yesno, and if we are not on a talk page, a tracking category -- is added. checkType('makeWikitextError', 1, msg, 'string') checkType('makeWikitextError', 2, helpLink, 'string', true) yesno = require('Module:Yesno') local title = mw.title.getCurrentTitle() -- Make the help link text. local helpText if helpLink then helpText = ' (help)' else helpText = end -- Make the category text. local category if not title.isTalkPage and yesno(addTrackingCategory) ~= false then category = 'Hatnote templates with errors' category = string.format( '%s:%s', mw.site.namespaces[14].name, category ) else category = end return string.format( '%s', msg, helpText, category ) end

-- Format link -- -- Makes a wikilink from the given link and display values. Links are escaped -- with colons if necessary, and links to sections are detected and displayed -- with " § " as a separator rather than the standard MediaWiki "#". Used in -- the template.

-- Hatnote -- -- Produces standard hatnote text. Implements the template.

function p.hatnote(frame) local args = getArgs(frame) local s = args[1] local options = {} if not s then return p.makeWikitextError( 'no text specified', 'Template:Hatnote#Errors', args.category ) end options.extraclasses = args.extraclasses options.selfref = args.selfref return p._hatnote(s, options) end

function p._hatnote(s, options) checkType('_hatnote', 1, s, 'string') checkType('_hatnote', 2, options, 'table', true) local classes = {'hatnote'} local extraclasses = options.extraclasses local selfref = options.selfref if type(extraclasses) == 'string' then classes[#classes + 1] = extraclasses end if selfref then classes[#classes + 1] = 'selfref' end return string.format( '
%s
', table.concat(classes, ' '), s )

end

return p-------------------------------------------------------------------------------- -- Module:Hatnote -- -- -- -- This module produces hatnote links and links to related articles. It -- -- implements the and meta-templates and includes -- -- helper functions for other Lua hatnote modules. --

local libraryUtil = require('libraryUtil') local checkType = libraryUtil.checkType local mArguments -- lazily initialise Module:Arguments local yesno -- lazily initialise Module:Yesno

local p = {}

-- Helper functions

local function getArgs(frame) -- Fetches the arguments from the parent frame. Whitespace is trimmed and -- blanks are removed. mArguments = require('Module:Arguments') return mArguments.getArgs(frame, {parentOnly = true}) end

local function removeInitialColon(s) -- Removes the initial colon from a string, if present. return s:match('^:?(.*)') end

function p.findNamespaceId(link, removeColon) -- Finds the namespace id (namespace number) of a link or a pagename. This -- function will not work if the link is enclosed in double brackets. Colons -- are trimmed from the start of the link by default. To skip colon -- trimming, set the removeColon parameter to true. checkType('findNamespaceId', 1, link, 'string') checkType('findNamespaceId', 2, removeColon, 'boolean', true) if removeColon ~= false then link = removeInitialColon(link) end local namespace = link:match('^(.-):') if namespace then local nsTable = mw.site.namespaces[namespace] if nsTable then return nsTable.id end end return 0 end

function p.formatPages(...) -- Formats a list of pages using formatLink and returns it as an array. Nil -- values are not allowed. local pages = {...} local ret = {} for i, page in ipairs(pages) do ret[i] = p._formatLink(page) end return ret end

function p.formatPageTables(...) -- Takes a list of page/display tables and returns it as a list of -- formatted links. Nil values are not allowed. local pages = {...} local links = {} for i, t in ipairs(pages) do checkType('formatPageTables', i, t, 'table') local link = t[1] local display = t[2] links[i] = p._formatLink(link, display) end return links end

function p.makeWikitextError(msg, helpLink, addTrackingCategory) -- Formats an error message to be returned to wikitext. If -- addTrackingCategory is not false after being returned from -- Module:Yesno, and if we are not on a talk page, a tracking category -- is added. checkType('makeWikitextError', 1, msg, 'string') checkType('makeWikitextError', 2, helpLink, 'string', true) yesno = require('Module:Yesno') local title = mw.title.getCurrentTitle() -- Make the help link text. local helpText if helpLink then helpText = ' (help)' else helpText = end -- Make the category text. local category if not title.isTalkPage and yesno(addTrackingCategory) ~= false then category = 'Hatnote templates with errors' category = string.format( '%s:%s', mw.site.namespaces[14].name, category ) else category = end return string.format( '%s', msg, helpText, category ) end

-- Format link -- -- Makes a wikilink from the given link and display values. Links are escaped -- with colons if necessary, and links to sections are detected and displayed -- with " § " as a separator rather than the standard MediaWiki "#". Used in -- the template.

-- Hatnote -- -- Produces standard hatnote text. Implements the template.

function p.hatnote(frame) local args = getArgs(frame) local s = args[1] local options = {} if not s then return p.makeWikitextError( 'no text specified', 'Template:Hatnote#Errors', args.category ) end options.extraclasses = args.extraclasses options.selfref = args.selfref return p._hatnote(s, options) end

function p._hatnote(s, options) checkType('_hatnote', 1, s, 'string') checkType('_hatnote', 2, options, 'table', true) local classes = {'hatnote'} local extraclasses = options.extraclasses local selfref = options.selfref if type(extraclasses) == 'string' then classes[#classes + 1] = extraclasses end if selfref then classes[#classes + 1] = 'selfref' end return string.format( '
%s
', table.concat(classes, ' '), s )

end

return p
1. ^ Boethius (who lived 480–524 or 525) reckoning on his fingers in {{Navbox |name = Television drama series |title = Television drama series |state = autocollapse |listclass = hlist |group1 = By location

|list1 =

|group2 = Genres

|list2 =

|group3 = List by country

|list3 =

|group4 = Format |list4 =

• Serial
• [[Procedural drama|P#REDIRECT.
2. ^ {{Navbox |name = Television drama series |title = Television drama series |state = autocollapse |listclass = hlist |group1 = By location

|list1 =

|group2 = Genres

|list2 =

|group3 = List by country

|list3 =

|group4 = Format |list4 =

• Serial
• [[Procedural drama|P#REDIRECT notes that as early as the 3rd millennium BCE, in Egypt's Old Kingdom, in the Pyramid texts' "Spell for obtaining a ferry-boat", the ferryman might object "Did you bring me a man who cannot number his fingers?". This spell was needed to cross a canal of the nether-world, as detailed in the Book of the Dead.
3. ^ Translated from the French by David Bellos, E.F. Harding, Sophie Wood and Ian Monk. Ifrah supports his thesis by quoting idiomatic phrases from languages across the entire world.

## References

-- Module:Hatnote -- -- -- -- This module produces hatnote links and links to related articles. It -- -- implements the and meta-templates and includes -- -- helper functions for other Lua hatnote modules. --

local libraryUtil = require('libraryUtil') local checkType = libraryUtil.checkType local mArguments -- lazily initialise Module:Arguments local yesno -- lazily initialise Module:Yesno

local p = {}

-- Helper functions

local function getArgs(frame) -- Fetches the arguments from the parent frame. Whitespace is trimmed and -- blanks are removed. mArguments = require('Module:Arguments') return mArguments.getArgs(frame, {parentOnly = true}) end

local function removeInitialColon(s) -- Removes the initial colon from a string, if present. return s:match('^:?(.*)') end

function p.findNamespaceId(link, removeColon) -- Finds the namespace id (namespace number) of a link or a pagename. This -- function will not work if the link is enclosed in double brackets. Colons -- are trimmed from the start of the link by default. To skip colon -- trimming, set the removeColon parameter to true. checkType('findNamespaceId', 1, link, 'string') checkType('findNamespaceId', 2, removeColon, 'boolean', true) if removeColon ~= false then link = removeInitialColon(link) end local namespace = link:match('^(.-):') if namespace then local nsTable = mw.site.namespaces[namespace] if nsTable then return nsTable.id end end return 0 end

function p.formatPages(...) -- Formats a list of pages using formatLink and returns it as an array. Nil -- values are not allowed. local pages = {...} local ret = {} for i, page in ipairs(pages) do ret[i] = p._formatLink(page) end return ret end

function p.formatPageTables(...) -- Takes a list of page/display tables and returns it as a list of -- formatted links. Nil values are not allowed. local pages = {...} local links = {} for i, t in ipairs(pages) do checkType('formatPageTables', i, t, 'table') local link = t[1] local display = t[2] links[i] = p._formatLink(link, display) end return links end

function p.makeWikitextError(msg, helpLink, addTrackingCategory) -- Formats an error message to be returned to wikitext. If -- addTrackingCategory is not false after being returned from -- Module:Yesno, and if we are not on a talk page, a tracking category -- is added. checkType('makeWikitextError', 1, msg, 'string') checkType('makeWikitextError', 2, helpLink, 'string', true) yesno = require('Module:Yesno') local title = mw.title.getCurrentTitle() -- Make the help link text. local helpText if helpLink then helpText = ' (help)' else helpText = end -- Make the category text. local category if not title.isTalkPage and yesno(addTrackingCategory) ~= false then category = 'Hatnote templates with errors' category = string.format( '%s:%s', mw.site.namespaces[14].name, category ) else category = end return string.format( '%s', msg, helpText, category ) end

-- Format link -- -- Makes a wikilink from the given link and display values. Links are escaped -- with colons if necessary, and links to sections are detected and displayed -- with " § " as a separator rather than the standard MediaWiki "#". Used in -- the template.

-- Hatnote -- -- Produces standard hatnote text. Implements the template.

function p.hatnote(frame) local args = getArgs(frame) local s = args[1] local options = {} if not s then return p.makeWikitextError( 'no text specified', 'Template:Hatnote#Errors', args.category ) end options.extraclasses = args.extraclasses options.selfref = args.selfref return p._hatnote(s, options) end

function p._hatnote(s, options) checkType('_hatnote', 1, s, 'string') checkType('_hatnote', 2, options, 'table', true) local classes = {'hatnote'} local extraclasses = options.extraclasses local selfref = options.selfref if type(extraclasses) == 'string' then classes[#classes + 1] = extraclasses end if selfref then classes[#classes + 1] = 'selfref' end return string.format( '
%s
', table.concat(classes, ' '), s )

end

return p-------------------------------------------------------------------------------- -- Module:Hatnote -- -- -- -- This module produces hatnote links and links to related articles. It -- -- implements the and meta-templates and includes -- -- helper functions for other Lua hatnote modules. --

local libraryUtil = require('libraryUtil') local checkType = libraryUtil.checkType local mArguments -- lazily initialise Module:Arguments local yesno -- lazily initialise Module:Yesno

local p = {}

-- Helper functions

local function getArgs(frame) -- Fetches the arguments from the parent frame. Whitespace is trimmed and -- blanks are removed. mArguments = require('Module:Arguments') return mArguments.getArgs(frame, {parentOnly = true}) end

local function removeInitialColon(s) -- Removes the initial colon from a string, if present. return s:match('^:?(.*)') end

function p.findNamespaceId(link, removeColon) -- Finds the namespace id (namespace number) of a link or a pagename. This -- function will not work if the link is enclosed in double brackets. Colons -- are trimmed from the start of the link by default. To skip colon -- trimming, set the removeColon parameter to true. checkType('findNamespaceId', 1, link, 'string') checkType('findNamespaceId', 2, removeColon, 'boolean', true) if removeColon ~= false then link = removeInitialColon(link) end local namespace = link:match('^(.-):') if namespace then local nsTable = mw.site.namespaces[namespace] if nsTable then return nsTable.id end end return 0 end

function p.formatPages(...) -- Formats a list of pages using formatLink and returns it as an array. Nil -- values are not allowed. local pages = {...} local ret = {} for i, page in ipairs(pages) do ret[i] = p._formatLink(page) end return ret end

function p.formatPageTables(...) -- Takes a list of page/display tables and returns it as a list of -- formatted links. Nil values are not allowed. local pages = {...} local links = {} for i, t in ipairs(pages) do checkType('formatPageTables', i, t, 'table') local link = t[1] local display = t[2] links[i] = p._formatLink(link, display) end return links end

function p.makeWikitextError(msg, helpLink, addTrackingCategory) -- Formats an error message to be returned to wikitext. If -- addTrackingCategory is not false after being returned from -- Module:Yesno, and if we are not on a talk page, a tracking category -- is added. checkType('makeWikitextError', 1, msg, 'string') checkType('makeWikitextError', 2, helpLink, 'string', true) yesno = require('Module:Yesno') local title = mw.title.getCurrentTitle() -- Make the help link text. local helpText if helpLink then helpText = ' (help)' else helpText = end -- Make the category text. local category if not title.isTalkPage and yesno(addTrackingCategory) ~= false then category = 'Hatnote templates with errors' category = string.format( '%s:%s', mw.site.namespaces[14].name, category ) else category = end return string.format( '%s', msg, helpText, category ) end

-- Format link -- -- Makes a wikilink from the given link and display values. Links are escaped -- with colons if necessary, and links to sections are detected and displayed -- with " § " as a separator rather than the standard MediaWiki "#". Used in -- the template.

-- Hatnote -- -- Produces standard hatnote text. Implements the template.

function p.hatnote(frame) local args = getArgs(frame) local s = args[1] local options = {} if not s then return p.makeWikitextError( 'no text specified', 'Template:Hatnote#Errors', args.category ) end options.extraclasses = args.extraclasses options.selfref = args.selfref return p._hatnote(s, options) end

function p._hatnote(s, options) checkType('_hatnote', 1, s, 'string') checkType('_hatnote', 2, options, 'table', true) local classes = {'hatnote'} local extraclasses = options.extraclasses local selfref = options.selfref if type(extraclasses) == 'string' then classes[#classes + 1] = extraclasses end if selfref then classes[#classes + 1] = 'selfref' end return string.format( '
%s
', table.concat(classes, ' '), s )

end

return p
1. ^
2. ^ a b
3. ^ a b
4. ^
5. ^
6. ^
7. ^ a b
8. ^ Julius Ruska, Arabische Texte über das Fingerrechnen, available at Digilibrary.de.
• ; 2nd edition, Brown University Press, 1957; reprint, New York: Dover publications, 1969; reprint, New York: Barnes and Noble Books, 1993.